package com.itheima.staticmethod;

public class Test3 {

    //静态变量
    static int number = 0;

    //静态方法
    public static void printHello() {
        System.out.println("Hello");
    }

    //实例变量
    String name;

    //实例方法
    public void printWorld() {
        System.out.println("World");
    }

    // 1.静态方法中可以直接访问静态成员，但不能直接访问实例成员
    public static void main(String[] args) {

        /*注意事项：
            1.静态方法中可以直接访问静态成员，但不能直接访问实例成员
            2.实例方法中可以直接访问静态成员，也可以直接访问实例成员
            3.静态方法中不能出现this关键字，实例方法中可以出现this关键字*/

    }

    //1.静态方法中可以直接访问静态成员，但不能直接访问实例成员
    public static void show() {
        printHello();
        //printWorld();  //直接访问报错
        System.out.println(number);
        //System.out.println(name);  //直接访问报错

        //间接访问
        Test3 t = new Test3();
        t.printWorld();
        System.out.println(t.name);

    }

    //2.实例方法中可以直接访问静态成员，也可以直接访问实例成员
    public void show2() {
        printHello();   //同一个类中，访问静态成员可以省略类名
        printWorld();
        System.out.println(number);  //同一个类中，访问静态成员可以省略类名
        System.out.println(name);
    }

    //3.静态方法中不能出现this关键字，实例方法中可以出现this关键字
    //this代表的是对象本身
    public static void show3() {

        //System.out.println(this);  //报错
    }

    public void show4() {

        System.out.println(this);
        System.out.println(this.name);
        System.out.println(this.number);
        this.printWorld();
        this.printHello();

    }


}
